package com.ruoyi.ruoyiqywechat.service;

import com.ruoyi.common.qy.token.WeChatOauthToken;
import com.ruoyi.common.qy.vo.CreateOrderRequestVo;
import com.ruoyi.common.qy.vo.CreateOrderResponseVo;
import com.ruoyi.common.qy.vo.WeChatAuthorizeLoginUserInfoVo;
import com.ruoyi.common.qy.vo.WeChatMiniAuthorizeVo;

/**
 *  微信公用服务
 *  +----------------------------------------------------------------------
 *  | CRMEB [ CRMEB赋能开发者，助力企业发展 ]
 *  +----------------------------------------------------------------------
 *  | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
 *  +----------------------------------------------------------------------
 *  | Licensed CRMEB并不是自由软件，未经许可不能去掉CRMEB相关版权
 *  +----------------------------------------------------------------------
 *  | Author: CRMEB Team <admin@crmeb.com>
 *  +----------------------------------------------------------------------
 */
public interface WechatNewService {
    /**
     * 小程序登录凭证校验
     * @return 小程序登录校验对象
     */
    WeChatMiniAuthorizeVo miniAuthCode(String code);
    /**
     * 生成小程序码
     * @param page 必须是已经发布的小程序存在的页面
     * @param scene 最大32个可见字符，只支持数字，大小写英文以及部分特殊字符：!#$&'()*+,/:;=?@-._~，其它字符请自行编码为合法字符
     * @return 小程序码
     */
    String createQrCode(String page, String scene);

    /**
     * 获取小程序accessToken
     * @return 小程序accessToken
     */
    String getMiniAccessToken();

    CreateOrderResponseVo payUnifiedorder(CreateOrderRequestVo unifiedorderVo);
    /**
     * 获取开放平台access_token
     * 通过 code 获取
     * 公众号使用
     * @return 开放平台accessToken对象
     */
    WeChatOauthToken getOauth2AccessToken(String code);

    WeChatAuthorizeLoginUserInfoVo getSnsUserInfo(String accessToken, String openId);
}
